package com.youlu.campus.entity.course.entity;

import com.youlu.campus.base.base.EntityBase;
import lombok.Data;
import org.springframework.data.mongodb.core.index.CompoundIndex;
import org.springframework.data.mongodb.core.index.CompoundIndexes;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;

import java.time.LocalDateTime;

/**
 * @author : [dengbo]
 * @className : UserKosCouponsOrder
 * @description : [kos优惠券]
 * @createTime : [2022/9/14 14:04]
 */
@Data
@Document(collection = "user_kos_coupons_order")
@CompoundIndexes({
        @CompoundIndex(name = "idx_activity_user_status", def = "{'userId':-1,'activityId':-1,'status':1}")
})
public class UserKosCouponsOrder extends EntityBase {
    /**
     * 活动ID
     */
    @Indexed
    private String activityId;
    /**
     * 兑换码
     */
    @Indexed
    private String redeemCode;
    /**
     * appId
     */
    private String appId;
    /**
     * 用户ID
     */
    private String userId;
    /**
     * openID
     */
    private String openId;
    /**
     * unionId
     */
    private String unionId;
    /**
     * 支付状态 0 未支付 1 支付失败 2 已经支付 3 退款中 4 已退款 5 已失效
     */
    private Integer status = 0;
    /**
     * 支付金额 分
     */
    private Integer price;
    /**
     * 订单号
     */
    @Indexed(unique = true)
    private String orderNo;
    /**
     * 支付时间
     */
    private LocalDateTime payTime;
    /**
     * 昵称
     */
    private String nickName;
    /**
     * 课程名称
     */
    private String name;
    /**
     * 手机号
     */
    @Indexed
    private String phone;
    /**
     * 平台
     */
    private String platform;
    /**
     * 商户id
     */
    private String merchantId;
    /**
     * 商户名称
     */
    private String merchantName;
    /**
     * 客户端ip
     */
    private String clientIp;
    /**
     * 退款单号
     */
    private String refundNo;
    /**
     * 退款时间
     */
    private LocalDateTime refundTime;
    /**
     * 微信交易单号
     */
    private String transactionId;
    /**
     *  有效时间
     */
    private LocalDateTime expireTime;
    /**
     *  订单开始时间
     */
    private LocalDateTime startTime;
    /**
     * 支付信息
     */
    private Object payInfo;
    /**
     * 活动渠道id
     */
    private String activityChannelId;
}
